package com.bd.scm.dao.mapper.user;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bd.scm.domain.dto.user.PersonnelFilesDto;
import com.bd.scm.domain.models.door.DoorDefinition;
import com.bd.scm.domain.models.user.PersonnelFiles;
import com.bd.scm.domain.models.user.PersonnelFilesImport;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface PersonnelFilesDao {
    /**
     * 人员列表
     * @param doorInfo
     * @param personnelFilesDto
     * @return
     */
    IPage<PersonnelFiles> getPersonList(Page<PersonnelFiles> doorInfo, PersonnelFilesDto personnelFilesDto);

    /**
     * 离职人员
     * @param personnelFilesDto
     * @return
     */
    int quitPerson(PersonnelFilesDto personnelFilesDto);

    /**
     * 根据编号查询人员信息
     * @param personnelFilesDto
     * @return
     */
    PersonnelFilesDto queryPersonById(PersonnelFilesDto personnelFilesDto);

    /**
     * 离职添加日志
     * @param personnelFilesDto
     */
    void insertUserLogByQuit(PersonnelFilesDto personnelFilesDto);
    /**
     * 离职添加日志
     * @param personnelFilesDto
     */
    void insertWtPublicByQuit(PersonnelFilesDto personnelFilesDto);

    /**
     * 修改人员
     * @param personnelFilesDto
     * @return
     */
    int updatePerson(PersonnelFilesDto personnelFilesDto);

    String getActypeById(PersonnelFilesDto personnelFilesDto);
    /**
     * 修改消费权限
     * @param personnelFilesDto
     * @return
     */
    int updateAcType(PersonnelFilesDto personnelFilesDto);

    /**
     * 权限组
     * @param personnelFilesDto
     */
    int execClientUserLimits(PersonnelFilesDto personnelFilesDto);
    /**
     * 修改添加日志
     * @param personnelFilesDto
     */
    void insertUserLogByUp(PersonnelFilesDto personnelFilesDto);

    /**
     * 修改添加日志
     * @param personnelFilesDto
     */
    void insertWtPublicByUp(PersonnelFilesDto personnelFilesDto);

    /**
     * 获取部门信息
     * @param personnelFilesDto
     * @return
     */
    PersonnelFilesDto getDepInfo(PersonnelFilesDto personnelFilesDto);

    /**
     * 往TmpDtUser添加数据
     * @param personnelFilesDto
     */
    void insertTmpDtUser(PersonnelFilesDto personnelFilesDto);

    /**
     * 获取用户编号
     * @param personnelFilesDto
     * @return
     */
    Long getUserSerial(PersonnelFilesDto personnelFilesDto);

    /**
     * 往DtAcUser里添加数据
     * @param personnelFilesDto
     */
    void insertDtAcUser(PersonnelFilesDto personnelFilesDto);

    /**
     * 往DtAcLink里添加数据
     * @param personnelFilesDto
     */
    void insertDtAcLink(PersonnelFilesDto personnelFilesDto);

    /**
     * 添加日志
     * @param personnelFilesDto
     */
    void insertUserLogByAdd(PersonnelFilesDto personnelFilesDto);

    /**
     * 添加日志
     * @param personnelFilesDto
     */
    void insertKqfxRiZhi(PersonnelFilesDto personnelFilesDto);

    /**
     * 添加日志
     * @param personnelFilesDto
     */
    void insertWtPublicByAdd(PersonnelFilesDto personnelFilesDto);

    /**
     * 获取账户类型
     * @return
     */
    List<PersonnelFilesDto> getacTypeList();
    /**
     * 获取省份
     * @return
     */
    List<PersonnelFilesDto> getNation();
    /**
     * 获取民族
     * @return
     */
    List<PersonnelFilesDto> getNative();
    /**
     * 获取档案类型
     * @return
     */
    List<PersonnelFilesDto> getUserType();

    /**
     * 根据人员ID获取人员信息.
     *
     * @param personnelFilesDto 条件
     * @return 人员信息
     */
    public PersonnelFilesDto getUserById(PersonnelFilesDto personnelFilesDto);


    /**
     * 更新人员编号
     */
    public void updateUserSerial();
    /**
     * 获取人员编号及工号
     *
     */
    public PersonnelFilesDto getUserSerialAndNo();




    /**
     * 获取部门信息
     * @param personnelFilesDto
     * @return
     */
    PersonnelFilesDto getDepInfoNew(PersonnelFilesDto personnelFilesDto);
    //调动
    String getDepSerial(PersonnelFilesDto personnelFilesDto);
    void realUserRemove(PersonnelFilesDto personnelFilesDto);
    int transferUser(PersonnelFilesDto personnelFilesDto);
    void insertTransferWt(PersonnelFilesDto personnelFilesDto);
    void insertTransferLog(PersonnelFilesDto personnelFilesDto);




    int  updateTmpUser(PersonnelFilesImport personnelFilesImport);
    int insertTmpUser(PersonnelFilesImport personnelFilesImport);
    void exceSynchronization();

    int addUser(PersonnelFilesImport personnelFilesImport);
}
